三 Python基础之数组和元组

数组

Python中的数组是list, 可以通过type函数查看一下类型

1
2
3
>>> arr = [1, 2, 'a', 'b', True, False]
>>> type(arr)
<class 'list'>

数组比较简单,和其他语言基本差不多,有一点区别是Python中的数组能够兼容不同的数据类型(如上面)

  • 数组长度

之前使用到len()函数,可以用来求数组元素的个数,也就是数组的长度

1
2
3
>>> arr = [1, 2]
>>> len(arr)
2
  • 通过index获取元素

数组是有序的数据结构,我们可以通过索引获取数组元素

1
2
3
>>> arr = [1, False]
>>> arr[0]
1

也可以通过倒序的方式获取数组的元素,-1表示最后一个元素,-2表示倒数第二个元素,以此类推…

1
2
3
>>> arr = [1, 2, 3]
>>> arr[-1]
3
  • 添加元素

通过append()函数可以将元素添加到数组的末尾

1
2
3
4
>>> arr = [1, 2]
>>> arr.append(3)
>>> arr
[1, 2, 3]
  • 插入元素

可以通过insert(index, value)函数在指定位置插入元素

1
2
3
4
>>> arr = ["a", "b"]
>>> arr.insert(1, "c")
>>> arr
['a', 'c', 'b']
  • 删除元素

可以通过pop(index)来删除指定位置(索引)的元素,如果不添加index,表示删除数组的最后一个元素

删除最后一个元素

1
2
3
4
5
>>> arr = ['a', 'b', 'c']
>>> arr.pop()
'c'
>>> arr
['a', 'b']

删除指定元素

1
2
3
4
5
>>> arr = ['a', 'b', True]
>>> arr.pop(1)
'b'
>>> arr
['a', True]
  • 修改元素

Python中的数组修改元素十分简单,直接将要替换的元素赋值即可,例如

1
2
3
4
>>> arr = [1, 2, 'a', 'b', True]
>>> arr[2] = 'c'
>>> arr
[1, 2, 'c', 'b', True]

元组

Python中有另外一种有序列表叫做元组。但是务必记住,元组一旦初始化,内部元素就不能修改,因此,一旦初始化了某个元组,你只能获取,无法改变其元素

1
2
3
4
5
6
7
8
9
10
11
>>> tuple = (1, 2, "b")
>>> tuple[0] // 获取第一个元素
1
>>> tuple[2] // 获取第三个元素
'b'
>>> len(tuple) // 元组元素个数
3
>>> len[2] = 3 // 改变值,报错!!!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object does not support item assignment

很明显,Python解释器提示我们不能支持元组修改值。

另外,如果只有一个元素的元组,为了避免和日期使用的小括号()产生歧义,因此元组在初始化时,必须在元素后面添加逗号,, 否则就不是元组,而是我们日常所使用的变量。

这一点其实作为iOS开发者应该也知道,Swift在初始化元组时,如果只有一个元素,也需要添加逗号,

1
2
3
>>> tuple = (1,) // 必须添加逗号
>>> tuple
(1,)

当然,元组的元素不能修改,指的是元素本身,比如

1
2
3
4
5
>>> tuple = (1, 'a', [2,3])
>>> tuple[2][0] = 4
>>> tuple[2][1] = 5
>>> tuple
(1, 'a', [4, 5])

嗯?不是说元组的元素不能修改吗?注意,这没有任何问题,上面的元组tuple的第3个元素本身是一个数组,当我们做tuple[2][0] = 4操作的时候,元组的元素有没有变?答案是没有!改变是只是[2,3]这个数组的元素,这个数组本身的地址(内存空间)是没有改变的,因此元组tuple的第2个元素的内存地址也是没有改变的,一定要注意区分。

小结

  • 数组和平时使用的其他语言很相似,根据内置函数调用即可。

  • 元组和数组很类似,但是,元组的元素只能访问,不能修改!